A virtual machine is a software implementation of a machine (computer) that includes its own operating system (referred to as a guest operating system) and executes application programs. A host computer allocates a certain amount of its resources to each of the virtual machines, and multiplexes its underlying hardware platform among the virtual machines. Each virtual machine is then able to use the allocated resources to execute its guest operating system and applications. The software layer providing the virtualization is commonly referred to as a hypervisor and is also known as a virtual machine monitor (VMM), a kernel-based hypervisor, or part of a host operating system. The hypervisor emulates the underlying hardware of the host computer, making the use of the virtual machine transparent to the guest operating system and the user of the computer.
A host computer can run multiple virtual machines simultaneously. Multiple host computers can be clustered together to provide a large number of virtual machines to an enterprise. In an enterprise, virtual machines may need to be shut down or suspended at the end of each work day to perform certain maintenance tasks (e.g., software upgrades, backup, etc.). At the beginning of the next work day when the workers come in, all of the virtual machines will be started at approximately the same time. Starting a large number of virtual machines can create a load spike that degrades the system performance.